﻿/*********************************************************
 * 开发人员：小兵
 * 创建时间：2012-10-8 16:35:43
 * 描述说明：
 * 
 * 更改历史：
 * 
 * *******************************************************/
namespace Mozlite.Data.Components.Installer
{
    using System;
    using System.Web;
    using System.Data;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    /// <summary>
    /// 安装数据库接口。
    /// </summary>
    public interface IInstaller
    {
        /// <summary>
        /// 获取当前版本。
        /// </summary>
        DatabaseVersion CurrentVersion { get; }

        /// <summary>
        /// 获取最新版本。
        /// </summary>
        DatabaseVersion LatestVersion { get; }

        /// <summary>
        /// 判断当前数据源是否可以连接。
        /// </summary>
        /// <value>
        /// 如果连接成功返回<c>true</c>，否则返回<c>false</c>。
        /// </value>
        bool CanConnect { get; }

        /// <summary>
        /// 判断当前数据库是否为空数据库。
        /// </summary>
        /// <value>
        /// 如果为空数据库返回<c>true</c>，否则返回<c>false</c>。
        /// </value>
        bool IsEmpty { get; }

        /// <summary>
        /// 获取当前数据库版本是否为最新版本。
        /// </summary>
        /// <value>
        /// 如果为最新版本返回<c>true</c>，否则返回<c>false</c>。
        /// </value>
        bool IsLatestVersion { get; }

        /// <summary>
        /// 判断当前数据库是否为可更新数据库。
        /// </summary>
        /// <value>
        /// 如果可以更新数据库返回<c>true</c>，否则返回<c>false</c>。
        /// </value>
        /// <remarks>空数据库不能更新，只能安装。</remarks>
        bool CanUpgrade { get; }

        /// <summary>
        /// 安装最新的数据库到目标源中。
        /// </summary>
        /// <exception cref="System.NotSupportedException">
        /// 如果不能安装或更新将抛出错误！
        /// </exception>
        void Install();
    }
}
